#ifndef __v3d_defs_h__
#define __v3d_defs_h__

#include "types.h"
#include "v3d_config.h"

//related to interface 
//windows
enum V3D_WINDOW_TYPE
{
	WINDOW_TYPE_NONE,
	WINDOW_TYPE_GLUT,
	WINDOW_TYPE_WIN32,
	WINDOW_TYPE_SDL,
	WINDOW_TYPE_X,

};

enum V3D_RENDERER_TYPE
{
	RENDERER_GL,
	RENDERER_GLES1X,
	RENDERER_GLES2X,
	RENDERER_DIRECTX,

};

//temply here will be moved to new file
#include <iostream>
#include <vector>
using namespace std;
class V3dObject
{

public:
	V3dObject()
	{

	}
	virtual ~V3dObject()
	{

	}

	//both same
	//kept as feeling message_immediate doent make sense in some cases
	virtual void MessageImmediate(int message_id, void *param) {}
	virtual void Update(int message_id, void *param){}

	/*
	 *

	static vector<v3d_object *> objectList;
	virtual void BroadcastMessage(int message_id, void *param)
	{
		for(int i = 0; i < v3d_object::objectList.size(); i ++)
			v3d_object::objectList[i]->MessageImmediate(message_id, param);
	}
	 */
};

//message id's and respective param structures
enum
{
	MSG_V3D_OBJECT,

};

typedef struct
{
	int width,height;
}WINDOW_RESIZE_PARAM;

#define 	TEXTURE		RENDERER->textureMgr
#define		RENDERER	V3dRenderer::I
#define		IINTERFACE	V3dInterface::I
#define		V3D			V3d::I


#include <stdio.h>
#define	LOG		printf


#endif		//__v3d_defs_h__


